home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / AOCE / Development Tools / Sample Code / Standard Catalog Package / DTS AddressOMatic / Src / AOMPanelManager.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-16  |  4.7 KB  |  208 lines  |  [TEXT/KAHL]

  1. /*                                AOMPanelManager.c                                */
  2. /*
  3.  * AddressOMatic Sample
  4.  * AOMPanelManager.c
  5.  * Copyright © 1993 Apple Computer Inc. All rights reserved.
  6.  */
  7. #include "AddressOMaticPrivate.h"
  8.  
  9. /*
  10.  * This is a jacket function for SDPNewPanel.
  11.  */
  12. OSErr
  13. _AOMPanelCreate(
  14.         register AddressOMaticPtr    aomPtr,
  15.         const RStringPtr            *typesList,            /* Types to select        */
  16.         unsigned long                typeCount,            /* Number of types        */
  17.         const PackedRLI                *initialRLI,        /* Initial selection    */
  18.         DirEnumChoices                enumFlags,            /* Enumeration flags    */
  19.         DirMatchWith                matchTypeHow,        /* Enumeration mode        */
  20.         short                        helpResourceID,        /* Help strings            */
  21.         SDPPanelHandle                *panelHandlePtr        /* The panel handle        */
  22.     )
  23. {
  24.         OSErr                        status;
  25.  
  26.         status = SDPNewPanel(
  27.                     panelHandlePtr,                    /* Result                */
  28.                     AOM.window,                        /* In this window        */
  29.                     &RECT(kAOMSDPPanelItem),        /* Bounds                */
  30.                     FALSE, FALSE,                    /* Initially invisible    */
  31.                     initialRLI,                        /* Anything preselected    */
  32.                     typesList,                        /* Types to browse        */
  33.                     typeCount,                        /* Number of types        */
  34.                     AOM.identity,                    /* User identity        */
  35.                     enumFlags,                        /* What to look for        */
  36.                     matchTypeHow,                    /* Understand typeList    */
  37.                     (long) aomPtr                    /* RefCon -> AOM        */
  38.                 );
  39.         LOG(status, "\pSDPNewPanel");
  40.         if (status == noErr && helpResourceID != 0) {
  41.             status = SDPSetPanelBalloonHelp(
  42.                     *panelHandlePtr,
  43.                     helpResourceID
  44.                 );
  45.             LOG(status, "\pSDPSetPanelBalloonHelp");
  46.         }
  47.         if (status == noErr) {
  48.             status = SDPInstallPanelBusyProc(
  49.                     *panelHandlePtr,
  50.                     _AOMAnimatePanel
  51.                 );
  52.         }
  53.         return (status);
  54. }
  55.  
  56. OSErr
  57. _AOMPanelDispose(
  58.         register AddressOMaticPtr    aomPtr,
  59.         SDPPanelHandle                panelHandle
  60.     )
  61. {
  62. #pragma unused (aomPtr)
  63.         OSErr                        status;
  64.  
  65.         if (panelHandle == NULL)
  66.             status = noErr;
  67.         else {
  68.             status = SDPDisposePanel(panelHandle);
  69.         }
  70.         return (status);
  71. }
  72.  
  73. OSErr
  74. _AOMPanelShow(
  75.         register AddressOMaticPtr    aomPtr,
  76.         SDPPanelHandle                panelHandle,
  77.         Boolean                        isShow
  78.     )
  79. {
  80. #pragma unused (aomPtr)
  81.         OSErr                        status;
  82.  
  83.         status = (isShow)
  84.                 ? SDPShowPanel(panelHandle)
  85.                 : SDPHidePanel(panelHandle);
  86.         LOG(status, "\pSDPShow/HidePanel");
  87.         return (status);
  88. }
  89.  
  90. OSErr
  91. _AOMPanelEnable(
  92.         register AddressOMaticPtr    aomPtr,
  93.         SDPPanelHandle                panelHandle,
  94.         Boolean                        isEnable
  95.     )
  96. {
  97. #pragma unused (aomPtr)
  98.         OSErr                        status;
  99.  
  100.         status = SDPEnablePanel(panelHandle, isEnable);
  101.         LOG(status, "\pSDPEnablePanel");
  102.         return (status);
  103. }
  104.  
  105. OSErr
  106. _AOMPanelSetFocus(
  107.         register AddressOMaticPtr    aomPtr,
  108.         SDPPanelHandle                panelHandle,
  109.         Boolean                        hasFocus
  110.     )
  111. {
  112. #pragma unused (aomPtr)
  113.         OSErr                        status;
  114.  
  115.         status = SDPSetFocus(panelHandle, hasFocus);
  116.         LOG(status, "\pSDPSetFocus");
  117.         return (status);
  118. }
  119.  
  120. OSErr
  121. _AOMPanelUpdate(
  122.         register AddressOMaticPtr    aomPtr,
  123.         SDPPanelHandle                panelHandle,
  124.         RgnHandle                    drawRgn
  125.     )
  126. {
  127. #pragma unused (aomPtr)
  128.         OSErr                        status;
  129.  
  130.         status = SDPUpdatePanel(panelHandle, drawRgn);
  131.         LOG(status, "\pSDPUpdatePanel");
  132.         return (status);
  133. }
  134.  
  135. /*
  136.  * This handles all of the selection extraction in one big lump.
  137.  * Returns kOCENoSuchRecord if there is no selection.
  138.  */
  139. OSErr
  140. _AOMPanelExtractSelection(
  141.         register AddressOMaticPtr    aomPtr,
  142.         SDPPanelHandle                panelHandle,
  143.         unsigned short                *selectionSize,
  144.         PackedDSSpecPtr                *dsSpec
  145.     )
  146. {
  147. #pragma unused (aomPtr)
  148.         OSErr                        status;
  149.         SDPSelectionState            selectionState;
  150.         
  151.         *selectionSize = 0;
  152.         status = SDPGetPanelSelectionState(panelHandle, &selectionState);
  153.         if (status == noErr) {
  154.             if (selectionState == kSDPRecordSelected
  155.              || selectionState == kSDPRecordAliasSelected)
  156.                 ;                                    /* We have a record            */
  157.             else {
  158.                 status = kOCENoSuchRecord;            /* Oops, nothing selected    */
  159.             }
  160.         }
  161.         if (status == noErr)                        /* Looking good, get size    */
  162.             status = SDPGetPanelSelectionSize(panelHandle, selectionSize);
  163.         if (status == noErr) {                        /* Allocate selection        */
  164.             *dsSpec = (PackedDSSpecPtr) NewPtr(*selectionSize);
  165.             status = MemError();
  166.         }
  167.         if (status == noErr) {                        /* If ok, get the data        */
  168.             status = SDPGetPanelSelection(panelHandle, *dsSpec);
  169.             if (status != noErr) {                    /* Oops, dump the buffer    */
  170.                 DisposePtr((Ptr) *dsSpec);
  171.                 *selectionSize = 0;
  172.                 *dsSpec = NULL;
  173.             }
  174.         }
  175.         LOG(status, "\p_AOMPanelExtractSelection");
  176.         return (status);
  177. }
  178.  
  179. void
  180. _AOMPanelAdjust(
  181.         register AddressOMaticPtr    aomPtr,
  182.         SDPPanelHandle                panelHandle
  183.     )
  184. {
  185.         (void) SDPMovePanel(panelHandle, PANEL.left, PANEL.top);
  186.         (void) SDPSizePanel(panelHandle, width(PANEL), height(PANEL));
  187. }
  188.  
  189. OSErr
  190. _AOMPanelSetIdentity(
  191.         register AddressOMaticPtr    aomPtr,
  192.         SDPPanelHandle                panelHandle,
  193.         AuthIdentity                userIdentity
  194.     )
  195. {
  196. #pragma unused (aomPtr)
  197.         OSErr                        status;
  198.         
  199.         if (panelHandle == NULL)
  200.             status = noErr;
  201.         else {
  202.             status = SDPSetIdentity(panelHandle, userIdentity);
  203.         }
  204.         return (status);
  205. }
  206.  
  207.             
  208.